#ifndef _COMMON_H_
#define _COMMON_H_
#include "gd32f30x.h"
#include <stdio.h>
#include <stdbool.h>
#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"	

/**
 * @desc  : 发送请求信号 + 阻塞等待应答（请求-应答同步核心接口）
 * @date  : 2025-11-04
 * @author: AnRui
 * @param : data - 通信结构体指针（已通过 comn_data_init 初始化，非NULL）
 * @param : timeout - 等待应答的超时时间（单位：FreeRTOS 系统节拍，portMAX_DELAY=无限等待）
 * @return: comn_err_e - 错误码（comn_option_success 表示成功）
 * @note  : 1. 调用前需先向 data->p_share_memory 写入待传递的数据；
 *          2. 接收方任务需在获取 req_sema 后处理数据，并调用 xSemaphoreGive(ack_sema) 应答
 */
bool comn_send_req_and_wait_ack(SemaphoreHandle_t req_sema,
    SemaphoreHandle_t ack_sema,
    TickType_t timeout,
    char* task_name);

#endif
